#ifndef __SCENE_H__
#define __SCENE_H__

#include "stdafx.h"
#include "Node.h"

class Scene : public Node
{
	bool isResourceReady;

public:
	Scene(void);			// Constructor
	~Scene(void);			// Destructor

	// Function to load up all resources used by the Scene
	virtual		void	Load(void) = 0;

	// Function to free up all resources used by the Scene
	virtual		void	Drop(void) = 0;

	// Function to reset any variables used by the Scene
	virtual		void	Reset(void) = 0;

	// Update function
	virtual		void	Idle(void) = 0;

	// Render function
	virtual		void	Display(void) = 0;

	// Function to check for keys that are pressed
	virtual		void	KeyboardDown(unsigned char key, int x, int y) = 0;

	// Function to check for keys that are released
	virtual		void	KeyboardUp(unsigned char key, int x, int y) = 0;

	// Function to check for special keys that are pressed
	virtual		void	SpecialDown(int key, int x, int y) = 0;

	// Function to check for special keys that are released
	virtual		void	SpecialUp(int key, int x, int y) = 0;

	// Function to check for button press
	virtual		void	Mouse(int button, int state, int x, int y) = 0;

	// Function to check for mouse movement when the buttons are pressed
	virtual		void	Motion(int x, int y) = 0;

	// Function to check for mouse movement when the buttons are not pressed
	virtual		void	PassiveMotion(int x, int y) = 0;
};

#endif // __SCENE_H__ //
/*
Example inherited class

class DLLEXPORT myScene : public Scene
{
public:
myScene				(void);
~myScene			(void);
void Load			(void);
void Drop			(void);
void Reset			(void);
void Idle			(void);
void Display		(void);
void KeyboardDown	(unsigned char key, int x, int y);
void KeyboardUp		(unsigned char key, int x, int y);
void SpecialDown	(int key, int x, int y);
void SpecialUp		(int key, int x, int y);
void Mouse			(int button, int state, int x, int y);
void Motion			(int x, int y);
void PassiveMotion	(int x, int y);
};

myScene::myScene(void)
{
}

myScene::~myScene(void)
{
}

void myScene::Load(void)
{
}

void myScene::Drop(void)
{
}

void myScene::Reset(void)
{
}

void myScene::Idle(void)
{
}

void myScene::Display(void)
{
}

void myScene::KeyboardDown(unsigned char key, int x, int y)
{
}

void myScene::KeyboardUp(unsigned char key, int x, int y)
{
}

void myScene::SpecialDown(int key, int x, int y)
{
}

void myScene::SpecialUp(int key, int x, int y)
{
}

void myScene::Mouse(int button, int state, int x, int y)
{
}

void myScene::Motion(int x, int y)
{
}

void myScene::PassiveMotion(int x, int y)
{
}

*/